package cn.bxshey.resourceSharing.controller;


import cn.bxshey.resourceSharing.entity.R;
import cn.bxshey.resourceSharing.mapper.CommentsMapper;
import cn.bxshey.resourceSharing.utils.JwtUtils;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import cn.bxshey.resourceSharing.entity.Comments;
import cn.bxshey.resourceSharing.service.CommentsService;
import org.apache.ibatis.annotations.Param;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.io.Serializable;
import java.util.List;

/**
 * (Comments)表控制层
 *
 * @author makejava
 * @since 2023-12-16 17:54:33
 */
@RestController
@RequestMapping("comments")
public class CommentsController {
    /**
     * 服务对象
     */
    @Resource
    private CommentsService commentsService;

    @Resource
    private CommentsMapper commentsMapper;


    /**
     * 分页查询所有评论数据
     */
    @GetMapping("/all")
    public R<?> page(Long eid) {
        return R.success(commentsMapper.selectComments(0L, eid));
    }

    /**
     * 统计文章评论数
     */
    @GetMapping("/count/{id}")
    public R<?> count(@PathVariable("id") Long id) {
        return R.success(commentsMapper.countComments(id));
    }

    /**
     * 添加评论
     */
    @PostMapping("/add")
    public R<?> add(@RequestHeader("AUTHORIZATION_TOKEN") String token, @RequestBody Comments comments) {
        return R.success(commentsService.insert(JwtUtils.checkToken(token), comments));
    }

    //获取未读评论信息个数
    @GetMapping("/size")
    public R<?> size(@RequestHeader("AUTHORIZATION_TOKEN") String token) {
        return R.success(commentsService.size(Long.valueOf(JwtUtils.checkToken(token).getId())));
    }

    //获取未读评论信息
    @GetMapping("/unread")
    public R<?> unread(@RequestHeader("AUTHORIZATION_TOKEN") String token, Long current) {
        return R.success(commentsService.unread(current, Long.valueOf(JwtUtils.checkToken(token).getId())));
    }

    //已读未读评论信息
    @GetMapping("/read")
    public R<?> read(@RequestHeader("AUTHORIZATION_TOKEN") String token, Long id) {

        return R.success(commentsService.read(id,Long.valueOf(JwtUtils.checkToken(token).getId())));
    }

//    /**
//     * 分页查询所有数据
//     *
//     * @param page 分页对象
//     * @param comments 查询实体
//     * @return 所有数据
//     */
//    @GetMapping
//    public R<?> selectAll(Page<Comments> page, Comments comments) {
//
//
//        return R.success(this.commentsService.page(page, new QueryWrapper<>(comments)));
//    }
//
//    /**
//     * 通过主键查询单条数据
//     *
//     * @param id 主键
//     * @return 单条数据
//     */
//    @GetMapping("{id}")
//    public R<?> selectOne(@PathVariable Serializable id) {
//        return R.success(this.commentsService.getById(id));
//    }
//
//    /**
//     * 新增数据
//     *
//     * @param comments 实体对象
//     * @return 新增结果
//     */
//    @PostMapping
//    public R<?> insert(@RequestBody Comments comments) {
//        return R.success(this.commentsService.save(comments));
//    }
//
//    /**
//     * 修改数据
//     *
//     * @param comments 实体对象
//     * @return 修改结果
//     */
//    @PutMapping
//    public R<?> update(@RequestBody Comments comments) {
//        return R.success(this.commentsService.updateById(comments));
//    }
//
//    /**
//     * 删除数据
//     *
//     * @param idList 主键结合
//     * @return 删除结果
//     */
//    @DeleteMapping
//    public R<?> delete(@RequestParam("idList") List<Long> idList) {
//        return R.success(this.commentsService.removeByIds(idList));
//    }
}

